BaseProtocolServer
Clase base para servidores de protocolo (FIX, SBE, etc.) Contiene infraestructura compartida: ciclo de vida, sesiones, suscripciones, canales de mensajes, tareas de fondo.
Hereda de: BaseLogReceiver
Implementa: IProtocolServer, ILogReceiver, ILogSource, IDisposable
Constructores
protected BaseProtocolServer(TSettings settings)
baseProtocolServer = BaseProtocolServer(settings)
Inicia una nueva instancia.
- settings
- Ajustes del servidor.
Propiedades
protected LoginRateLimiter LoginRateLimiter { get; private set; }
value = baseProtocolServer.LoginRateLimiter
baseProtocolServer.LoginRateLimiter = value
Limitador de tarifas para los intentos de inicio de sesión (compartido entre todos los oyentes).
public IEnumerable<IMessageListenerSession> Sessions { get; }
value = baseProtocolServer.Sessions
Sesiones activas.
public ChannelStates State { get; protected set; }
value = baseProtocolServer.State
baseProtocolServer.State = value
Consigue el almacenamiento estatal subyacente.
Métodos
public void AddSubscription(ServerSubscription subscription)
baseProtocolServer.AddSubscription(subscription)
Agregue su suscripción.
- subscription
- Suscripción.
protected virtual void ClearState()
baseProtocolServer.ClearState()
Despejar todo el estado: oyentes, sesiones, suscripciones.
protected string Convert(string value)
result = baseProtocolServer.Convert(value)
Convertir texto en latín si está configurado.
protected abstract TSubscription CreateSubscription(TClientSession session, string requestId, ServerSubscription subscription, MessageTypes type)
result = baseProtocolServer.CreateSubscription(session, requestId, subscription, type)
Crear una instancia de información de suscripción.
public void Disconnect(IMessageListenerSession session)
baseProtocolServer.Disconnect(session)
Sesión de desconexión.
- session
- Sesión.
protected override void DisposeManaged()
baseProtocolServer.DisposeManaged()
Libera recursos.
protected void EnqueueMessage(TClientSession session, string requestId, Func<TSubscription, TClientSession, string, CancellationToken, ValueTask> handler, CancellationToken cancellationToken)
baseProtocolServer.EnqueueMessage(session, requestId, handler, cancellationToken)
Encargue el mensaje para una sesión con ID de solicitud.
protected void EnqueueMessage(TSubscription subscription, TClientSession session, string requestId, Func<TSubscription, TClientSession, string, CancellationToken, ValueTask<bool>> handler, CancellationToken cancellationToken)
baseProtocolServer.EnqueueMessage(subscription, session, requestId, handler, cancellationToken)
Encuentro básico: programar trabajo en una sesión de cliente.
protected void EnqueueMessage(TSubscription[] subscribers, Func<TSubscription, TClientSession, string, CancellationToken, ValueTask> handler, CancellationToken cancellationToken)
baseProtocolServer.EnqueueMessage(subscribers, handler, cancellationToken)
Encuue message for multiple subscribers.
protected void EnqueueMessage(TSubscription[] subscribers, Func<TSubscription, TClientSession, string, CancellationToken, ValueTask<bool>> handler, CancellationToken cancellationToken)
baseProtocolServer.EnqueueMessage(subscribers, handler, cancellationToken)
Encuue message for multiple subscribers (with bool result).
protected void EnqueueMessage(TSubscription subscription, Func<TSubscription, TClientSession, string, CancellationToken, ValueTask> handler, CancellationToken cancellationToken)
baseProtocolServer.EnqueueMessage(subscription, handler, cancellationToken)
Encuue message for a single subscription.
protected void EnqueueMessage(TSubscription subscription, Func<TSubscription, TClientSession, string, CancellationToken, ValueTask<bool>> handler, CancellationToken cancellationToken)
baseProtocolServer.EnqueueMessage(subscription, handler, cancellationToken)
Encuue message for a single subscription (with bool result).
protected void EnqueueMessage(TClientSession session, Func<TSubscription, TClientSession, string, CancellationToken, ValueTask> handler, CancellationToken cancellationToken)
baseProtocolServer.EnqueueMessage(session, handler, cancellationToken)
Solicitar un mensaje para una sesión (sin solicitar ID).
protected abstract string GetSessionKey(TClientSession session)
result = baseProtocolServer.GetSessionKey(session)
Consiga la clave utilizada para agrupar las sesiones de clientes (e.g. SenderCompId).
public IEnumerable<ServerSubscription> GetSubscriptions(IMessageListenerSession session)
result = baseProtocolServer.GetSubscriptions(session)
Obtener suscripción para la sesión especificada.
- session
- Sesión.
Devuelve: Suscripciones.
public bool HasSubscriptions(DataType dataType, SecurityId securityId)
result = baseProtocolServer.HasSubscriptions(dataType, securityId)
Hay suscriptores.
protected abstract bool IsStubSubscription(TSubscription subscription)
result = baseProtocolServer.IsStubSubscription(subscription)
Compruebe si la suscripción es un stub (accionista de posición).
public override void Load(SettingsStorage storage)
baseProtocolServer.Load(storage)
Ajustes de carga.
- storage
- Configuración de almacenamiento.
protected abstract void OnClearListenerState()
baseProtocolServer.OnClearListenerState()
Estado de escucha específico del protocolo claro (detener a los oyentes, etc.).
protected abstract void OnStartListeners(CancellationToken cancellationToken)
baseProtocolServer.OnStartListeners(cancellationToken)
Comience los oyentes específicos del protocolo (TCP, etc.) Agregue tareas a _backgroundTasks.
protected abstract void ProcessInMessage(Message message, CancellationToken cancellationToken)
baseProtocolServer.ProcessInMessage(message, cancellationToken)
Procesar un mensaje entrante y una ruta para clientes suscritos.
protected virtual void ProcessLogout(TClientSession session)
baseProtocolServer.ProcessLogout(session)
Procesamiento de logotipo/desconexión cliente.
protected void RaiseNewOutMessage(IMessageListenerSession session, Message message)
baseProtocolServer.RaiseNewOutMessage(session, message)
Escribe mensaje saliente al canal.
protected void RaiseSessionConnected(IMessageListenerSession session)
baseProtocolServer.RaiseSessionConnected(session)
Elevar el evento conectado sesión.
protected void RaiseSessionDisconnected(IMessageListenerSession session)
baseProtocolServer.RaiseSessionDisconnected(session)
Levantar sesión evento desconectado.
public bool RemoveSubscription(ServerSubscription subscription)
result = baseProtocolServer.RemoveSubscription(subscription)
Retire la suscripción.
- subscription
- Suscripción.
Devuelve: si se encontró la suscripción, de lo contrario.
public bool Resume(ServerSubscription subscription)
result = baseProtocolServer.Resume(subscription)
Reanuda la suscripción.
- subscription
- Suscripción.
Devuelve: si se encontró la suscripción, de lo contrario.
public void Resume(IMessageListenerSession session)
baseProtocolServer.Resume(session)
Continuación del período de sesiones.
- session
- Sesión.
public IAsyncEnumerable<ValueTuple<IMessageListenerSession, Message>> RunAsync(CancellationToken cancellationToken)
result = baseProtocolServer.RunAsync(cancellationToken)
Ejecute mensajes de procesamiento y de vuelta de mensajes salientes como IAsyncEnumerable. Abre el servidor al principio y cierra al final.
public override void Save(SettingsStorage storage)
baseProtocolServer.Save(storage)
Guardar configuración.
- storage
- Configuración de almacenamiento.
protected abstract void ScheduleSessionWork(TClientSession session, ServerSubscription subscription, string requestId, Func<TClientSession, string, CancellationToken, ValueTask<bool>> handler)
baseProtocolServer.ScheduleSessionWork(session, subscription, requestId, handler)
Programar trabajo en la cola de salida de una sesión de cliente.
public virtual bool SendInMessage(Message message)
result = baseProtocolServer.SendInMessage(message)
Enviar mensaje entrante al servidor para procesar y enrutar a los clientes.
protected void StartServer(CancellationToken cancellationToken)
baseProtocolServer.StartServer(cancellationToken)
Iniciar el servidor: inicializar el estado, iniciar los oyentes y tareas de fondo.
protected void StopServer()
baseProtocolServer.StopServer()
Detén el servidor: cancela tareas, canales completos, estado claro.
public void Suspend(IMessageListenerSession session)
baseProtocolServer.Suspend(session)
Sesión suspendida.
- session
- Sesión.
public bool Suspend(ServerSubscription subscription)
result = baseProtocolServer.Suspend(subscription)
Suscripción suspendida.
- subscription
- Suscripción.
Devuelve: si se encontró la suscripción, de lo contrario.
Eventos
public event Action<IMessageListenerSession> SessionConnected
baseProtocolServer.SessionConnected += handler
Evento conectado a la sesión.
public event Action<IMessageListenerSession> SessionDisconnected
baseProtocolServer.SessionDisconnected += handler
Sesión evento desconectado.
public event Action StateChanged
baseProtocolServer.StateChanged += handler
Acto de cambio de Estado.
public event Action<ServerSubscription> SubscriptionChanged
baseProtocolServer.SubscriptionChanged += handler
La suscripción al cliente cambió el evento.
Campos
protected readonly List<Task> _backgroundTasks
value = baseProtocolServer._backgroundTasks
Tareas de fondo (aceptar clientes, procesar mensajes, etc.).
protected readonly SynchronizedSet<long> _cancellationRequests
value = baseProtocolServer._cancellationRequests
Hasta que se cancelen los documentos de transacción de solicitud de cancelación de pedidos.
protected readonly SynchronizedSet<ServerSubscription> _changedSubscriptions
value = baseProtocolServer._changedSubscriptions
Cambio de suscripciones pendientes de notificación.
protected readonly CachedSynchronizedDictionary<string, CachedSynchronizedList<TClientSession>> _clientSessions
value = baseProtocolServer._clientSessions
Sesiones de clientes agrupadas por clave de sesión (e.g. SenderCompId).
protected readonly Channel<Message> _incomingMessages
value = baseProtocolServer._incomingMessages
Canal de mensajes entrantes.
protected readonly Channel<ValueTuple<IMessageListenerSession, Message>> _outgoingMessages
value = baseProtocolServer._outgoingMessages
Canal de mensajes salientes (sesión + pares de mensajes).
protected readonly SubscriptionHolder<TSubscription, TClientSession> _subscriptions
value = baseProtocolServer._subscriptions
Titular de suscripción.